STM32

您所在的位置:网站首页 rs232 to ttl发送数据 STM32

STM32

2024-07-11 17:05| 来源: 网络整理| 查看: 265

一、UART通信

      UART是Universal Asynchronous Receiver / Transmitter的缩写,意即通用异步串行通信接口,是最常用的通信技术之一,广泛用于设备与电脑之间、设备与设备之间、设备内部芯片与芯片之间的通信。以两个5V单片机芯片之间的UART串口通信为例,如图1所示:

        波特率就是发送二进制数据位的速率,习惯上用baud表示,即发送一位二进制数据的持续时间=1/baud。在通信之前,单片机1和单片机2首先都要明确的约定好它们之间的通信波特率,必须保持一致,收发双方才能正常实现通信。

        约定好速度后,还要考虑第二个问题,数据什么时候是起始,什么时候是结束呢?在UART通信的时候,一个字节是8位,规定当没有通信信号发生时,通信线路保持高电平,当要发送数据之前,先发一位0表示起始位,然后发送8位数据位,数据位是先低后高的顺序,数据位发完后再发一位1表示停止位。这样本来要发送一个字节的8位数据,而实际上一共发送了10位,多出来的两位其中一位起始位,一位停止位。而接收方呢,原本一直保持的高电平,一旦检测到了一位低电平,那就知道了要开始准备接收数据了,接收到8位数据位后,检测到停止位,再准备下一个数据的接收,如图2所示。

串口通信的接收过程:

(异步通信:接收器和发送器有各自的时钟;同步通信:发送器和接收器由同一个时钟源控制。RS232是异步通信)

(1)开始通信时,信号线为空闲(逻辑1),当检测到由1到0的跳变时,开始对“接收时钟”计数。

(2)当计到8个时钟时,对输入信号进行检测,若仍为低电平,则确认这是“起始位”,而不是干扰信号。

(3)接收端检测到起始位后,隔16个接收时钟,对输入信号检测一次,把对应的值作为D0位数据。若为逻辑1, 作为数据位1;若为逻辑0,作为数据位0。

(4)再隔16个接收时钟,对输入信号检测一次,把对应的值作为D1位数据。….,直到全部数据位都输入。

(5)检测校验位P(如果有的话)。

(6)接收到规定的数据位个数和校验位后,通信接口电路希望收到停止位S(逻辑1),若此时未收到逻辑1,说明出现了错误,在状态寄存器中置“帧错误”标志。若没有错误,对全部数据位进行奇偶校验,无校验错时,把数据位从移位寄存器中送数据输入寄存器。若校验错,在状态寄存器中置奇偶错标志。

(7)本幀信息全部接收完,把线路上出现的高电平作为空闲位。

(8)当信号再次变为低时,开始进入下一幀的检测。

二、RS232通信接口

        TTL电平用于串口通信时,有3.3V和5V两个系列。由于电压范围小,所以抗干扰能力较弱,传输的具体不远,在9600波特率传输距离为2米,一般不超过15米。因为RS232电平是负逻辑,且电平值可以高达12V,最大传输距离可以达到十几米,而通常单片机引脚是兼容的TTL电平标准,那么RS232接口想要与单片机相连接,就需要用一个电平转换芯片(比如MAX232)来完成。

        在关于串口通讯的叫法太多,什么RS232通讯、串口通讯、DB9通讯、UART通讯等等,随便怎么叫吧,理解就行。

        串行通讯,从字面意思理解就行,就是把数据串成一串发出去,比如一个字节8位,高位先发出去,那么发送顺序就是bit7--bit6--bit5--bit4--bit3--bit2--bit1--bit0。

串口数据收发:

        1、声明一个UART_HandleTypeDef结构

        2、配置波特率、字符长度、停止位、校验位等

        3、UART 管脚配置:配置管脚位置和时钟

        4、UART初始化

        5、开始发送数据

DMA配置

中断收发



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3